public class Liste { public Object data; public Liste next; public Liste(Object data) { this.data = data; // ^ ^- data-Variable aus der Methode // |- data-Property aus dem Objekt } public void append(Liste l) { Liste helper; // "this" ist das Objekt von dem die Methode aufgerufen wird // im Beispiel unten "testliste" for (helper = this; helper.next != null; helper=helper.next) {} // Am Ende der for-Schleife ist helper das letzte Objekt der Liste // helper.next ist in dem Moment null helper.next = l; } // zweite (überladene / overloaded) append()-Methode zur Bequemlichkeit public void append(Object o) { append( new Liste( o ) ); // ^ ^- Übergebenes Argument // |- Aufruf der anderen append()-Methode mit Argument "Liste" } public String toString() { // toString gibt es "stillschweigend" in jeder Klasse // will man, dass es eine sinnvolle Ausgabe erzeugt // kann man es einfach mit einer eigenen Deklaration // "überlagern" / "Override" Liste helper; String r = ""; for (helper = this; helper != null; helper = helper.next) { r += "" + helper.data; if ( helper.next != null ) { r += ", "; } } return r; } // kann auch null zurück geben! public Liste get( int idx ) { Liste helper = this; if (idx < 0) { return null; } while (idx > 0 && helper != null ) { helper = helper.next; idx--; } return helper; } public static void main(String[] args) { System.out.println("== Klasse: Liste =="); Liste testliste; testliste = new Liste("Null"); testliste.append( new Liste( "Eins" ) ); testliste.append( new Liste( "Zwei" ) ); testliste.append("Drei"); testliste.append("Vier"); testliste.append("Fünf"); testliste.append("Sechs"); testliste.append("Sieben"); testliste.append("Acht"); testliste.append("Neun"); assert(testliste.data.equals("Null")); assert(testliste.next.data.equals("Eins")); assert(testliste.get(2).data.equals("Zwei")); assert(testliste.get(9).data.equals("Neun")); assert(testliste.get(10) == null); assert(testliste.get(0).data.equals("Null")); assert(testliste.get(0) == testliste); assert(testliste.get(-1) == null); assert(testliste.toString().equals("Null, Eins, Zwei, Drei, Vier, Fünf, Sechs, Sieben, Acht, Neun") ); assert(testliste.next.next.toString().equals("Zwei, Drei, Vier, Fünf, Sechs, Sieben, Acht, Neun") ); } }